Versi 1
| Field | Isi |
|---|---|
| Dokumen ID | VBS-FIN-006 |
| Deskripsi | Pencatatan pembayaran gaji karyawan per masa gaji, baik melalui invoice gaji biasa (jenis pekerja, tunjangan, potongan PPh, BPJS) maupun dengan mengubah pengeluaran kas/bank yang sudah tercatat menjadi invoice gaji |
| Nomor Revisi | 1 |
| Tanggal | 2026-10-04 |
| Keterangan | Dokumentasi baseline dari dokumentasi fitur demo dan kode FE |
1. Ringkasan
a. In scope
- User melihat daftar pembayaran gaji (tanggal, masa gaji, nomor invoice, kandang / gudang / cabang, klaster, total gaji, total tunjangan, total BPJS, total potongan PPh, status invoice) dan memfilternya berdasarkan tanggal, masa gaji, akun kas/bank, cabang, klaster, status invoice, dan karyawan.
- User membuat invoice gaji biasa: cabang, masa gaji, klaster, keterangan, dan baris karyawan berisi jenis pekerja, nominal gaji, akun dan nominal tunjangan, potongan PPh, pihak penanggung PPh, akun pembayaran, tanggal dibayar, serta komponen BPJS.
- Jenis pekerja: pegawai tetap, pegawai tidak tetap bulanan, pegawai tidak tetap harian, asing, badan, tenaga ahli. PPh ditanggung oleh: pegawai, perusahaan, atau pemerintah.
- User membuat pengeluaran gaji dari transaksi kas/bank keluar: memilih akun lawan (beban), jenis pekerja, dan rentang tanggal, lalu menandai baris pengeluaran sebagai gaji / tunjangan per karyawan dan masa gaji.
- User menyimpan invoice gaji biasa sebagai draft atau final, mengubah / menghapus draft, mengatur ulang BPJS Kesehatan dan Ketenagakerjaan, mengubah final ke draft, memposting ulang, serta mencetak slip gaji dan nota gaji.
b. Catatan
c. Kesimpulan
- [FE] -
- [BE] -
2. Functional Requirement
| Kode | Deskripsi |
|---|---|
| FR-01 | Sistem menampilkan daftar invoice gaji dengan total gaji, tunjangan, BPJS, potongan PPh, dan status |
| FR-02 | User dapat memfilter daftar berdasarkan tanggal, masa gaji, akun kas/bank, cabang, klaster, status, dan karyawan |
| FR-03 | User dapat membuat invoice gaji dengan banyak baris karyawan |
| FR-04 | Setiap baris karyawan memuat jenis pekerja, gaji, tunjangan, potongan PPh, penanggung PPh, akun pembayaran, tanggal bayar, dan BPJS |
| FR-05 | User dapat menyimpan invoice gaji sebagai draft atau final |
| FR-06 | User dapat mengubah pengeluaran kas/bank keluar menjadi invoice gaji |
| FR-07 | User dapat mengubah dan menghapus invoice gaji draft |
| FR-08 | User dapat menghitung dan memperbarui BPJS Ketenagakerjaan / Kesehatan pada invoice draft |
| FR-09 | User dengan hak draft dapat mengubah invoice gaji final kembali ke draft |
| FR-10 | User dapat memposting ulang invoice gaji final |
| FR-11 | User dapat mencetak slip gaji dan nota invoice gaji |
3. Use Case List
| Kode | Deskripsi |
|---|---|
| UC-01 | Melihat dan memfilter daftar pembayaran gaji |
| UC-02 | Membuat invoice gaji |
| UC-03 | Membuat pengeluaran gaji dari transaksi kas bank |
| UC-04 | Mengubah invoice gaji draft |
| UC-05 | Memperbarui BPJS pada invoice gaji draft |
| UC-06 | Membuka kembali (unlock) invoice gaji final ke draft |
| UC-07 | Menghapus invoice gaji draft |
| UC-08 | Memposting ulang invoice gaji |
| UC-09 | Mencetak slip gaji dan nota gaji |
4. Use Case Scenario
UC-01 : Melihat dan memfilter daftar pembayaran gaji
| Aktor | User keuangan / HR |
| Deskripsi | User melihat dan memfilter daftar invoice gaji |
| Prekondisi | User sudah login dan memiliki akses menu Pembayaran Gaji |
| Alur utama | 1. User membuka menu Keuangan, Pembayaran Gaji. 2. Sistem menampilkan daftar invoice gaji beserta penanda rekap. 3. User mengisi filter tanggal, masa gaji, akun kas/bank, cabang, klaster, status invoice, atau karyawan. 4. Sistem memuat ulang daftar. |
| Alur negatif | - Jika daftar kosong atau gagal dimuat, sistem menampilkan keadaan kosong / alert error. |
| Bisnis rule | - Masa gaji dikirim dalam format tahun-bulan (YYYYMM). - Status invoice: selesai / draft. |
| Postkondisi | Daftar invoice gaji tampil |
| Trigger | User membuka halaman atau mengubah filter |
| Kode FR | FR-01 FR-02 |
UC-02 : Membuat invoice gaji
| Aktor | User keuangan / HR |
| Deskripsi | User mencatat pembayaran gaji karyawan untuk satu masa gaji |
| Prekondisi | User memiliki hak dasar, data karyawan dan akun kas/bank tersedia |
| Alur utama | 1. User memilih Tambah Invoice. 2. User mengisi cabang, masa gaji, klaster, nomor invoice (opsional), dan keterangan. 3. User mengatur kolom yang dipakai (gaji, tunjangan, potongan PPh, BPJS Kesehatan, BPJS Ketenagakerjaan) beserta tanggal dan akun bayar BPJS. 4. User menambah baris karyawan: karyawan, jenis pekerja, gaji, akun dan nominal tunjangan, potongan PPh, PPh ditanggung oleh, akun pembayaran, tanggal dibayar, komponen BPJS. 5. User menyimpan sebagai draft atau final. 6. Sistem menampilkan "Berhasil buat Invoice Gaji" atau "Draft Invoice Gaji Berhasil dibuat". |
| Alur negatif | - Jika header belum lengkap (misal masa gaji kosong), muncul "Tolong lengkapi form dengan benar!". - Jika rincian karyawan belum lengkap, muncul "Tolong lengkapi rincian dengan benar!". - Jika user membatalkan konfirmasi final, data tidak disimpan. - Jika server menolak, muncul notifikasi error. |
| Bisnis rule | - Masa gaji wajib diisi. - Jika PPh ditanggung pegawai, baris ditandai sebagai beban karyawan. - Tanggal invoice diisi otomatis tanggal hari ini. - Total gaji, tunjangan, dan potongan PPh dihitung dari seluruh baris. |
| Postkondisi | Invoice gaji tersimpan sebagai draft atau final |
| Trigger | User memilih Tambah Invoice |
| Kode FR | FR-03 FR-04 FR-05 |
UC-03 : Membuat pengeluaran gaji dari transaksi kas bank
| Aktor | User keuangan / HR |
| Deskripsi | User mengubah pengeluaran kas/bank yang sudah tercatat menjadi invoice gaji |
| Prekondisi | Sudah ada transaksi kas/bank keluar pada akun beban terkait |
| Alur utama | 1. User memilih Tambah Pengeluaran Gaji. 2. User memilih akun lawan, jenis pekerja, dan rentang tanggal. 3. Sistem memuat rincian transaksi kas/bank keluar pada akun dan periode tersebut. 4. User mencentang baris yang dijadikan upah, lalu mengisi karyawan, jenis upah (gaji / tunjangan), dan masa gaji. Satu baris dapat dipecah ke beberapa karyawan. 5. Sistem menampilkan total pengeluaran ditandai upah, total gaji, dan total tunjangan. 6. User menyimpan. 7. Sistem menampilkan notifikasi pengeluaran invoice gaji berhasil dibuat. |
| Alur negatif | - Jika akun lawan atau jenis pekerja belum dipilih, muncul "Tolong lengkapi form dengan benar!". - Jika tidak ada baris dicentang atau baris tanpa karyawan, muncul "Tidak ada data yang dipilih!". - Jika server menolak, muncul notifikasi error. |
| Bisnis rule | - Akun lawan dibatasi rekening berawalan 5, 6, 8, dan 9. - Hanya satu aksi simpan, tanpa draft / final terpisah. - Jenis upah gaji mengisi nominal gaji, jenis upah tunjangan mengisi nominal tunjangan. |
| Postkondisi | Invoice gaji terbentuk dari pengeluaran kas/bank |
| Trigger | User memilih Tambah Pengeluaran Gaji |
| Kode FR | FR-06 |
UC-04 : Mengubah invoice gaji draft
| Aktor | User keuangan / HR |
| Deskripsi | User memperbaiki invoice gaji yang masih draft |
| Prekondisi | Invoice gaji berstatus draft dan user memiliki hak dasar |
| Alur utama | 1. User memilih Edit. 2. Sistem memuat detail invoice gaji. 3. User mengubah header atau baris karyawan. 4. User menyimpan sebagai draft atau final. 5. Sistem menampilkan "Berhasil update Invoice Gaji" atau "Draft Invoice Gaji Berhasil diupdate". |
| Alur negatif | - Validasi sama dengan UC-02. - Jika server menolak, muncul notifikasi error. |
| Bisnis rule | - Menu Edit hanya untuk invoice draft. |
| Postkondisi | Invoice gaji terbarui |
| Trigger | User memilih Edit |
| Kode FR | FR-07 |
UC-05 : Memperbarui BPJS pada invoice gaji draft
| Aktor | User keuangan / HR |
| Deskripsi | User menghitung dan menyimpan komponen BPJS Ketenagakerjaan / Kesehatan |
| Prekondisi | Invoice gaji berstatus draft |
| Alur utama | 1. User memilih Edit BPJS Kesehatan, Ketenagakerjaan. 2. User mengisi persentase komponen BPJS TK (JHT, JKK, JKM, JKP, JP, porsi karyawan). 3. Sistem menghitung BPJS per karyawan. 4. User menyimpan. 5. Sistem menampilkan "Berhasil Memperharui data BPJS invoice NOMOR". |
| Alur negatif | - Jika tidak ada karyawan, muncul "Tidak ada data karyawan yg mau diupdate!". - Jika kalkulasi gagal, muncul notifikasi error. |
| Bisnis rule | - Kalkulasi BPJS dilakukan oleh server berdasarkan invoice gaji. |
| Postkondisi | Komponen BPJS invoice terbarui |
| Trigger | User memilih Edit BPJS |
| Kode FR | FR-08 |
UC-06 : Membuka kembali (unlock) invoice gaji final ke draft
| Aktor | User keuangan / HR dengan hak draft |
| Deskripsi | User mengembalikan invoice gaji final menjadi draft |
| Prekondisi | Invoice gaji berstatus final |
| Alur utama | 1. User memilih Ubah ke Simpan Draft. 2. Sistem membuka kunci invoice. 3. Sistem menampilkan "Berhasil Ubah ke Simpan Draft Invoice NOMOR". |
| Alur negatif | - Jika user tidak punya hak draft, menu tidak muncul. - Jika server menolak, muncul alert error. |
| Bisnis rule | - Membutuhkan hak draft Pembayaran Gaji. |
| Postkondisi | Invoice kembali draft |
| Trigger | User memilih Ubah ke Simpan Draft |
| Kode FR | FR-09 |
UC-07 : Menghapus invoice gaji draft
| Aktor | User keuangan / HR |
| Deskripsi | User menghapus invoice gaji draft |
| Prekondisi | Invoice gaji berstatus draft |
| Alur utama | 1. User memilih Hapus. 2. Sistem menampilkan konfirmasi "Anda yakin ingin menghapus NOMOR?". 3. Sistem menghapus invoice dan menampilkan "Berhasil hapus Invoice Gaji". |
| Alur negatif | - Jika user membatalkan konfirmasi, data tidak dihapus. - Jika server menolak, muncul alert error. |
| Bisnis rule | - Menu Hapus hanya untuk invoice draft dengan hak dasar. |
| Postkondisi | Invoice gaji terhapus |
| Trigger | User memilih Hapus |
| Kode FR | FR-07 |
UC-08 : Memposting ulang invoice gaji
| Aktor | User keuangan / HR |
| Deskripsi | User memicu ulang posting jurnal invoice gaji final |
| Prekondisi | Invoice final dengan status proses posting atau belum berstatus |
| Alur utama | 1. User memilih Posting Ulang. 2. Sistem memproses ulang posting. 3. Sistem menampilkan notifikasi berhasil posting ulang. |
| Alur negatif | - Jika server menolak, muncul alert error. |
| Bisnis rule | - Menu hanya muncul jika status invoice "proses posting" atau kosong. |
| Postkondisi | Jurnal invoice gaji terbentuk ulang |
| Trigger | User memilih Posting Ulang |
| Kode FR | FR-10 |
UC-09 : Mencetak slip gaji dan nota gaji
| Aktor | User keuangan / HR |
| Deskripsi | User mencetak slip gaji per karyawan atau nota invoice gaji |
| Prekondisi | Invoice gaji berstatus final |
| Alur utama | 1. User memilih Cetak Slip Gaji atau Cetak Nota. 2. Sistem memuat detail invoice siap cetak. 3. Sistem membuat PDF "SLIP GAJI" atau "INVOICE GAJI". |
| Alur negatif | - Jika rincian gaji kosong, cetak tidak dilanjutkan. - Cetak ulang dibatasi riwayat cetak dan hak reprint. |
| Bisnis rule | - Cetak hanya untuk invoice final. |
| Postkondisi | PDF slip / nota gaji tampil |
| Trigger | User memilih menu cetak |
| Kode FR | FR-11 |
5. Data Flow Diagram
DFD-01 — Alur data pembayaran gaji
6. Sequence Diagram
SD-01 — UC-01 : Melihat dan memfilter daftar pembayaran gaji
SD-02 — UC-02 : Membuat invoice gaji
SD-03 — UC-03 : Membuat pengeluaran gaji dari transaksi kas bank
SD-04 — UC-04 : Mengubah invoice gaji draft
SD-05 — UC-05 : Memperbarui BPJS pada invoice gaji draft
SD-06 — UC-06 : Membuka kembali (unlock) invoice gaji final ke draft
SD-07 — UC-07 : Menghapus invoice gaji draft
SD-08 — UC-08 : Memposting ulang invoice gaji
SD-09 — UC-09 : Mencetak slip gaji dan nota gaji
7. Table Schema
8. API Schema
| Endpoint | Status | Perubahan |
|---|---|---|
GET /invoice-gaji | existing | - |
GET /invoice-gaji/:id | existing | - |
POST /invoice-gaji | existing | - |
PUT /invoice-gaji/:id | existing | - |
PUT /invoice-gaji/unlock/:id | existing | - |
DELETE /invoice-gaji/:id | existing | - |
POST /invoice-gaji/sync | existing | - |
POST /invoice-gaji/cashflow-to-gaji | existing | - |
POST /invoice-gaji/bpjs-tk | existing | - |
GET /invoice-kasbank-harian | existing | - |
GET /rekening | existing | - |